home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene Storm
/
Scene Storm - Volume 1.iso
/
coding
/
asm
/
demos
/
outcastmag
/
outcastpack_v1.02.src
< prev
next >
Wrap
Text File
|
1980-01-06
|
55KB
|
2,608 lines
*******************- OUTCAST PACK MAG CODE (C) PHIL!95/NEO -*****************
section outcastcode,code_c
incdir 'scene1:coding/asm/demos/exsyslib/'
include 'include/hardware/exsys_takeover.s' ;1st codeline!
Incdir scene1:coding/asm/demos/outcastmag/
move.l _OSVBR(a4),_vbr
start: movem.l a0-a6/d1-d7,-(a7)
move.l #$dff000,a0
move.l #restvars,a1
move.w $1c(a0),orig_inten(a1)
move.w $1e(a0),orig_intreq(a1)
move.w $02(a0),orig_dmacon(a1)
move.l _vbr,a2
move.l $6c(a2),orig_lev3(a1)
move.l $68(a2),orig_lev2(a1)
jsr routine
move.w #$7fff,$dff09a
move.w #$7fff,$dff09c
move.w #$7fff,$dff096
move.l #restvars,a1
move.l _vbr,a2
move.l orig_lev3(a1),$6c(a2)
move.l orig_lev2(a1),$68(a2)
move.w orig_inten(a1),d0
move.w orig_dmacon(a1),d1
move.w orig_intreq(a1),d2
ori.w #$c000,d0
move.w d0,$dff09a
ori.w #$8000,d1
move.w d1,$dff096
ori.w #$8000,d2
move.w d2,$dff09c
Move.l $4,a6 ;restore system
move.l #gfx_text,a1
moveq #0,d0
jsr -$228(a6)
addi.l #$26,d0
move.l d0,a0
* move.l (a0),$dff080
* clr.w $dff088
movem.l (a7)+,a0-a6/d1-d7
moveq #0,d0
bsr loadexe
moveq #0,d0
bra start
_vbr: dc.l 0
gfx_text dc.b "graphics.library",0
even
restvars dcb.w $8,0
orig_inten equ $0
orig_intreq equ $2
orig_dmacon equ $4
orig_lev3 equ $6
orig_lev2 equ $a
*----------------------------------------------------------------------------
* OUTCAST Variable_Labels *
oldmousex equ 0
oldmousey equ 2
pointerx equ 4
pointery equ 6
icon_lit equ 8
no_of_intros equ $a
intros_first_line equ $c
intros_step equ $e
menu_mode equ $10
intro_highlighted equ $12
screen_offset equ $14
next_page_top equ $16
scroll_left equ $1a
scroll_right equ $1c
column_slice equ $1e
last_page equ $20
current_page_top equ $22
first_page equ $26
icon_selected equ $28
drop_screen equ $2a
drop_sin_index equ $2c
nextpage_trig equ $2e
prevpage_trig equ $30
menu_trig equ $32
newframe equ $34
keypressed equ $36
oldkey equ $37
charnumber equ $38
matchline equ $3a
matchscreen equ $3c
old_match_address equ $3e
did_find equ $42
start_of_section equ $44
nearestmatchline equ $48
nearestmatchpagetop equ $4a
nearestmatchscreen equ $4c
showsearchbox equ $50
y_centre equ $52
waitpage equ $54
music_toggle equ $56
fade_music equ $58
fade_in_all equ $5a
fade_out_all equ $5c
quit equ $5e
barpos equ $60
searchplanes_on equ $62
copirq_occured equ $64
fadelpi equ $66
load_intro equ $68
presentspage equ $6a
;----------------------------------------------------------------------------
routine: move.l #$dff000,a6
move.l #$7fff7fff,$9a(a6)
move.w #$8400,$96(a6)
move.l _vbr,a2
move.l #New_LEV3,$6c(a2)
move.l #New_Lev2,$68(a2)
move.l #outcast_vars,a5
moveq #$3f,d7
wipevars clr.w (a5)+
dbf d7,wipevars
move.l #textscreen-84,a5
move.w #8693,d7
wipets clr.w (a5)+
dbf d7,wipets
move.l #textplane2,a5
move.w #6971,d7
wipetp2 clr.w (a5)+
dbf d7,wipetp2
move.l #lpcols1+2,a5
move.l #lpcols2+2,a4
move.l #cop_cols1+2,a3
move.l #cop_cols3+2,a2
move.l #cop_pcols+2,a1
move.w #15,d7
cccloop1 clr.w (a5)
clr.w (a4)
clr.w (a3)
clr.w (a2)
clr.w (a1)
addq.w #4,a5
addq.w #4,a4
addq.w #4,a3
addq.w #4,a2
addq.w #4,a1
dbf d7,cccloop1
move.l #cop_bcols+6,a5
moveq #31,d7
setbclp move.w #sbcol,(a5)
add.w #20,a5
dbf d7,setbclp
bsr mt_init
bsr INIT_FONTS
move.l #cop_bpls1,a0
move.l #cop_bpls3,a1
move.l #topborder,d0
move.l #bottomborder,d1
moveq #3,d7
initbpllp move.w d0,6(a0)
swap d0
move.w d0,2(a0)
swap d0
move.w d1,6(a1)
swap d1
move.w d1,2(a1)
swap d1
add.l #40,d0
add.l #40,d1
addq.l #8,a0
addq.l #8,a1
dbf d7,initbpllp
move.l #cop_bpl2,a0
move.l #textplane2,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #cop_spr,a0
move.l #spr1,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #spr2,d0
move.w d0,$e(a0)
swap d0
move.w d0,$a(a0)
move.l #copper_bar,d0
move.l #cop_skpln,a0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
move.l #copper_rtn,d0
move.l #copper_bar,a0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
move.l #copper,d0
move.l #cop_rstrt,a0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
moveq #1,d0
moveq #0,d1
bsr blit_button
moveq #7,d0
moveq #0,d1
bsr blit_button
moveq #8,d0
moveq #1,d1
bsr blit_button
moveq #2,d0
moveq #0,d1
bsr blit_button
move.l #lpbpls1,a0
move.l #lpbpls2,a1
move.l #outcastscreen,d0
move.l #outcastscreen+(512/8*4),d1
moveq #3,d7
initlplp move.w d0,6(a0)
swap d0
move.w d0,2(a0)
swap d0
move.w d1,6(a1)
swap d1
move.w d1,2(a1)
swap d1
add.l #512/8,d0
add.l #512/8,d1
addq.l #8,a0
addq.l #8,a1
dbf d7,initlplp
move.l #lpswap1,a0
move.l #lpswap2,a1
move.l #loadingpiccopper1,d0
move.l #loadingpiccopper2,d1
move.w d0,6(a1)
swap d0
move.w d0,2(a1)
move.w d1,6(a0)
swap d1
move.w d1,2(a0)
bsr drawinitpage
move.l #cop_cols2+2,a5
moveq #7,d7
wcclp clr.w (a5)
addq.w #4,a5
dbf d7,wcclp
include includes/dotplot_initcode_c.src
move.w #$4000,mt_volscale
move.l #$dff000,a6
move.l #outcast_vars,a5
move.w #1,presentspage(a5)
move.b #$ff,keypressed(a5)
move.w #34,fade_in_all(a5)
move.w #$1,first_page(a5)
move.w #$1,last_page(a5)
move.w #$01fe,cop_doskp
move.l #copper,$80(a6)
clr.w $88(a6)
move.w #$c038,$9a(a6)
;---------------------------------------------------------------------------
waitloop move.l #outcast_vars,a5 ;main code loop
tst.w newframe(a5)
beq.s waitloop
clr.w newframe(a5)
bsr eachframetasks
move.l #outcast_vars,a5
tst.w quit(a5)
beq waitloop
jsr mt_end
move.l _vbr,a2
move.l #lev3phase2,$6c(A2) ;loading pic section
move.l #$dff000,a0
move.w #$7fff,$9a(a0)
move.l #lacesynccopper,$80(a0)
clr.w $88(a0)
wlf1 btst #7,$4(a0)
beq.s wlf1
wlf2 btst #7,$4(a0)
bne.s wlf2
wlf3 btst #7,$4(a0)
beq.s wlf2
move.l #loadingpiccopper1,$80(a0)
clr.w $88(a0)
move.w #$c020,$9a(a0)
waitloop2 move.l #outcast_vars,a5
tst.w newframe(a5)
beq.s waitloop2
clr.w newframe(a5)
bsr fadeloadpicin
move.l #outcast_vars,a5
addq.w #1,fadelpi(a5)
cmpi.w #64,fadelpi(a5)
bls.s waitloop2
move.w load_intro(a5),d0
subq.w #1,d0
lsl.w #2,d0
move.l #fn_addrs,a0
move.l $00(a0,d0.w),filename
rts
;---------------------------------------------------------------------------
New_lev3 movem.l a0-a6/d0-d7,-(a7)
andi.w #$10,$dff01e
beq.s vbl
bsr mt_music
bsr highlight
move.l #outcast_vars,a5
move.w #1,copirq_occured(a5)
move.w #$0010,$dff09c
bra l3end
vbl move.l #outcast_vars,a5
move.w #1,newframe(a5)
bsr update_screen_pos
bsr dot_plotter
bsr gen_searchbox
move.w #$0020,$dff09c
l3end movem.l (a7)+,a0-a6/d0-d7
rte
;---------------------------------------------------------------------------
Lev3phase2
movem.l a0-a6/d0-d7,-(a7)
move.l #outcast_vars,a5
move.w #1,newframe(a5)
move.w #$0020,$dff09c
bra l3end
;---------------------------------------------------------------------------
New_lev2:
movem.l d0/a2,-(a7)
move.l #$bfe001,a2
btst #3,$d00(a2)
beq nokey
move.b #$48,$e00(a2)
move.b #53,$400(a2) ;set timer lo
move.b #00,$500(a2) ;set timer hi (starts counter)
kciawlp2 btst #0,$e00(a2) ;wait for timeout
bne.s kciawlp2
bclr #6,$e00(a2)
move.b $c00(a2),d0
not.b d0
ror.b #1,d0
move.l #outcast_vars,a2
move.b d0,keypressed(a2)
nokey move.w #8,$dff09c
movem.l (a7)+,d0/a2
rte
;---------------------------------------------------------------------------
eachframetasks:
bsr screen_changes
bsr mouse
bsr pointer_sense
bsr button_handler
bsr scroll_text
bsr music_fader
bsr screen_fades
rts
;---------------------------------------------------------------------------
update_screen_pos:
drop_x equ $c0
drop_step equ 2
movem.l a0-a6/d0-d7,-(a7)
move.l #outcast_vars,a6
tst.w waitpage(a6)
beq.s nowp
subq.w #1,waitpage(a6)
nowp tst.w searchplanes_on(a6)
bne sp_on
move.l #cop_bpl1,a0
move.l #textscreen+2,a1
add.w screen_offset(a6),a1
move.l a1,d0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
swap d0
subi.l #84,d0
move.l #cop_bpl2,a0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
swap d0
sp_on tst.w drop_screen(a6)
beq no_drop
moveq #$48,d0
move.w drop_sin_index(a6),d1
lsl.w #1,d1
move.l #sinetable,a2
move.w $00(a2,d1.w),d1
lsl.w #1,d1
neg.w d1
mulu #drop_x,d1
swap d1
add.w d1,d0
move.w #$b200,cop_tstrt+6
cmpi.w #$eb,d0
bls.s pos_ok
move.w #$ec,d0
clr.w cop_tstrt+6
pos_ok move.b d0,cop_tstrt
no_drop move.w barpos(a6),d0
move.l #copper_bar+8,a0
lea $8(a0),a1
moveq #$1f,d7
hlloop move.b d0,(a0)
move.b d0,(a1)
add.w #$14,a0
add.w #$14,a1
addq.w #1,d0
dbf d7,hlloop
movem.l (a7)+,a0-a6/d0-d7
rts
;---------------------------------------------------------------------------
screen_changes
movem.l a0-a6/d0-d7,-(a7)
move.l #outcast_vars,a6
tst.w drop_screen(a6)
beq no_drop2
add.w #drop_step,drop_sin_index(a6) ;screen dropped out of sight?
cmp.w #178,drop_sin_index(a6)
bne.s no_max_depth
move.l #dot_vars,a5
move.w #1,dospin(a5)
clr.w presentspage(a6)
tst.w menu_trig(a6) ;menu mode triggered?
beq.s notsmenu
clr.w screen_offset(a6)
bsr create_intro_menu
move.w #10,drop_sin_index(a6)
bra no_drop2
notsmenu move.w matchline(a6),d0 ;screen shown as result of search?
beq notsf
move.w matchscreen(a6),d0
mulu #80,d0
notsf move.l next_page_top(a6),a1
move.l #textscreen+2,a0
move.w d0,screen_offset(a6)
add.w d0,a0
bsr make_text_screen
move.w #2,drop_sin_index(a6)
bra no_drop2
no_max_depth
cmpi.w #90,drop_sin_index(a6)
bne.s no_drop2
clr.w drop_screen(a6)
tst.w menu_trig(a6)
beq.s no_mt
clr.w menu_trig(a6)
move.w #1,menu_mode(a6)
no_mt move.w matchline(a6),d0
beq no_drop2
subq.w #1,d0
lsl.w #3,d0
add.b #$47,d0
move.b d0,cop_hl1
add.b #9,d0
move.b d0,cop_hl2
move.w #$0180,cop_hl1+4 ;highlight col 0
move.w #$0180,cop_hl2+4 ;highlight col 0
clr.w matchline(a6)
no_drop2 movem.l (a7)+,a0-a6/d0-d7
rts
;---------------------------------------------------------------------------
mouse: move.l #$dff000,a0 ;read mouse - move pointer
move.l #outcast_vars,a2
move.b $a(a0),d0
move.b $b(a0),d1
move.b d0,d2
move.b d1,d3
sub.b oldmousex(a2),d0
sub.b oldmousey(a2),d1
ext.w d0
ext.w d1
add.w d0,pointery(a2)
skp_y add.w d1,pointerx(a2)
cmpi.w #$134,pointerx(a2)
blt.s xinrr
move.w #$134,pointerx(a2)
xinrr tst.w pointerx(a2)
bpl.s xinrl
clr.w pointerx(a2)
xinrl cmpi.w #$e0,pointery(a2)
blt.s yinrb
move.w #$e0,pointery(a2)
yinrb tst.w pointery(a2)
bpl.s yinrt
clr.w pointery(a2)
yinrt move.b d2,oldmousex(a2)
move.b d3,oldmousey(a2)
move.l #spr1,a3 ;put new coords in sprite
move.w pointerx(a2),d0
move.w pointery(a2),d1
add.w #$80,d0
add.w #$49,d1
move.w d1,d2
add.w #$f,d2
move.b d1,(a3)
move.b d2,$2(a3)
move.w #$80,d4
lsr.w #1,d0
bcc.s nocarry
or.w #1,d4
nocarry move.b d0,$1(a3)
btst #8,d1
beq.s novstrt
ori.w #4,d4
novstrt btst #8,d2
beq.s novstop
ori.w #2,d4
novstop move.b d4,$3(a3)
move.l (a3),spr2
skipxy tst.w intro_highlighted(a2)
beq.s normb
tst.w fade_out_all(a2)
bne.s normb
move.w intro_highlighted(a2),load_intro(a2)
btst #6,$bfe001
bne.s normb
move.w #40,fade_out_all(a2)
move.w #$fc00,fade_music(a2)
normb rts
;---------------------------------------------------------------------------
Pointer_sense
moveq #0,d7
move.l #outcast_vars,a0
tst.w drop_screen(a0)
bne noclick
tst.w scroll_left(a0)
bne noclick
tst.w scroll_right(a0)
bne noclick
btst #6,$bfe001
bne noclick
move.l #buttonsensemask,a1
move.w pointery(a0),d0
sub.w #166,d0 ;text screen height
bcs nobit3
move.w pointerx(a0),d1
lsr.w #1,d0
lsr.w #1,d1
move.w d1,d2
andi.w #7,d2
eori.w #7,d2
mulu #(160/8)*4,d0
add.w d0,a1
lsr.w #3,d1
add.w d1,a1
btst d2,(a1)
beq.s nobit0
ori.w #1,d7
nobit0 add.w #160/8,a1
btst d2,(a1)
beq.s nobit1
ori.w #2,d7
nobit1 add.w #160/8,a1
btst d2,(a1)
beq.s nobit2
ori.w #4,d7
nobit2 add.w #160/8,a1
btst d2,(a1)
beq.s nobit3
ori.w #8,d7
nobit3
noclick move.w d7,icon_selected(a0)
rts
;---------------------------------------------------------------------------
blit_button:
* D0 : button to draw 1-9
* D1 : 1=select, 0=unselect
movem.l a0-a6/d0-d7,-(a7)
move.l #$dff000,a6
move.l #$ffff0000,$44(a6) ;f/l word masks
move.l #button_unselected_addrs,a0
tst.w d1
beq.s unsel
move.l #button_selected_addrs,a0
unsel move.l #buttonsizes_and_positions,a2
subq.w #1,d0
lsl.w #2,d0
move.w d0,d1
lsl.w #1,d1
move.w 0(a2,d1.w),d2 ;size x
lsr.w #3,d2 ;width in bytes
move.w d2,d6 ;store byte width
mulu 2(a2,d1.w),d2 ;* size y
move.w d2,d4 ;store length of 1 plane
lsl.w #2,d2 ;* 4 to find mask
move.l 0(a0,d0.w),a1
move.l a1,$4c(a6) ;source b - data
add.w d2,a1
move.l #bottomborder,a3
move.w 4(a2,d1.w),d3 ;x plot pos
move.w d3,d5
move.w 6(a2,d1.w),d2 ;y pos
mulu #40*4,d2
lsr.w #4,d3
lsl.w #1,d3
add.w d3,a3
add.w d2,a3 ;plot address
and.w #$f,d5
ror.w #4,d5
move.w d5,$42(a6) ;bltcon1
ori.w #$0fca,d5
move.w d5,$40(a6) ;bltcon0
addq.w #2,d6
move.w #40*4,d5
sub.w d6,d5
move.w d5,$60(a6) ;mod c
move.w d5,$66(a6) ;mod d
move.w #$fffe,$62(a6) ;mod b
move.w #$fffe,$64(a6) ;mod a
move.w 2(a2,d1.w),d5 ;size y
lsl.w #6,d5
lsr.w #1,d6
or.w d6,d5
moveq #3,d7
blitloop move.l a1,$50(a6) ;source a - mask
move.l a3,$48(a6) ;source c
move.l a3,$54(a6) ;dest d
move.w d5,$58(a6)
bsr blitwait
add.w #40,a3
dbf d7,blitloop
movem.l (a7)+,a0-a6/d0-d7
rts
*----------------------------------------------------------------------------
Create_intro_menu
X_centre equ 320
Y_line_spacing equ 2
Modulo equ 84
movem.l a0-a6/d0-d7,-(a7)
bsr clear_main_screen
move.l #cop_bpl2,a0
move.l #textscreen-82,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #intros_banner,a1
move.l a1,a3
moveq #0,d1 ;count number of lines used by intro
findlines move.b (a3)+,d0 ;menu banner, so that the centre of
beq.s foundlnes ;the remaining space can be found
cmpi.b #$a,d0
bne.s findlines
addq.w #1,d1
bra findlines
foundlnes mulu #9,d1
move.w #166,d2
sub.w d1,d2
lsr.w #1,d2
add.w d1,d2
subq.w #1,d2
move.l #Outcast_vars,a6
move.w d2,y_centre(a6)
move.l #textscreen+2,a0
bsr make_text_screen
move.l #Outcast_vars,a6
clr.w screen_offset(a6)
move.l #textscreen+2,plot_screen
move.w #modulo,total_modulo
move.w #0,use_font
move.l #intros_text,a0
moveq #0,d7 ;count number of intros
move.l a0,a1
lcntloop cmpi.b #$a,(a1)+
bne.s lcntloop
addq.w #1,d7
cmp.b #"@",(a1)+
bne.s lcntloop
move.w d7,no_of_intros(a6)
move.l #font_list,a1
move.w use_font,d3
mulu #3*4,d3
move.l 0(a1,d3.w),a2
move.w $2(a2),d0 ;height of this font
add.w #y_line_spacing,d0
move.w d0,d2
move.w d0,intros_step(a6)
mulu d7,d0 ;total height of intro text
lsr.w #1,d0
move.w y_centre(a6),d1
sub.w d0,d1 ;y position of 1st line
move.w d1,plotypos
subq.w #2,d1
move.w d1,intros_first_line(a6)
move.l 8(a1,d3.w),a2
sub.w #128,a2 ;char width list
move.l a0,a3
nxtmnuln bsr findpixlength
lsr.w #1,d1
move.w #x_centre,d0
sub.w d1,d0
move.w d0,plotxpos
bsr type_text
add.w d2,plotypos
cmpi.b #"@",(a3)
bne nxtmnuln
move.l #copper_bar+8,a0
move.w intros_step(a6),d0
mulu #$14,d0
move.w #$0088,-4(a0,d0.w)
bsr setmenupalette
movem.l (a7)+,a0-a6/d0-d7
rts
findpixlength:
move.l a3,a0
moveq #0,d1
moveq #0,d0
ftwid move.b (a3)+,d0
cmp.b #$a,d0
beq.s eol
move.b 0(a2,d0.w),d0
add.w d0,d1 ;total width
add.w char_spacing,d1
bra.s ftwid
eol rts
*----------------------------------------------------------------------------
highlight
move.l #outcast_vars,a6
tst.w menu_mode(a6)
bne.s go_hl
rts
go_hl moveq #0,d0
move.w pointery(a6),d0
sub.w intros_first_line(a6),d0
bcs outrange
divu intros_step(a6),d0
move.w d0,d1
addq.w #1,d1
cmp.w no_of_intros(a6),d1
bhi.s outrange
move.w d1,intro_highlighted(a6)
mulu intros_step(a6),d0
add.w intros_first_line(a6),d0
add.w #$48,d0
move.w d0,barpos(a6)
move.w #$0088,cop_doskp
rts
outrange move.w #$01fe,cop_doskp
clr.w intro_highlighted(a6)
rts
******************************************************************************
*>>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE STARTS <<<<<<<<<<<<<<<<<<<<<<<<<<*
******************************************************************************
* Any_Font plotter V1.00 (C) Phil!95/Neo 26/3/95...
INIT_FONTS:
movem.l a0-a6/d0-d7,-(a7)
move.l #font_list,a6
init_cset move.l $4(a6),a0
move.l $8(a6),a1
move.l (a6),a4
move.l a4,d0 ;All fonts done?
beq finitdone
addq.w #4,a4
move.w -4(a4),d0
mulu -2(a4),d0
add.l d0,a4 ;edge detect line
moveq #0,d7 ;pixel pos
moveq #0,d0
nextpoint move.b (a0)+,d0
beq csetdone
move.w d0,d1
lsl.w #1,d1
move.w d7,(a1,d1.w) ;position of char
findpoint addq.w #1,d7
move.w d7,d6
move.w d6,d5
lsr.w #3,d6
andi.w #7,d5
eori.w #7,d5
btst d5,(a4,d6.w)
beq.s findpoint
move.w d7,d6
sub.w (a1,d1.w),d6
move.b d6,-128(a1,d0.w) ;width of char
bra nextpoint
csetdone
add.w #12,a6
bra init_cset
finitdone
movem.l (a7)+,a0-a6/d0-d7
rts
*----------------------------------------------------------------------------
TYPE_TEXT:
move.w use_font,d0
mulu #12,d0 ;access correct font tables
nxt_char move.b (a0)+,d7
cmpi.b #$a,d7
bls.s text_done
bsr PLOT_CHAR
bra nxt_char
text_done rts
*----------------------------------------------------------------------------
PLOT_CHAR:
* D7 holds ASCII value of char to plot.
* Vars: Plotxpos and plotypos hold plot position.
* Total_modulo = y line offset
* Char_spacing = (additional) character gap
* Plot_screen = screen start address
movem.l a0-a6/d0-d7,-(a7)
move.l #font_list,a4
move.l 0(a4,d0.w),a1
addq.w #4,a1
move.l Plot_screen,a2
move.l $8(a4,d0.w),a3
move.l #mask_list,a5
move.l #$dff000,a6
moveq #0,d0
move.w plotypos,d0
mulu total_modulo,d0
add.l d0,a2
move.w plotxpos,d1
move.w d1,d2
andi.w #$f,d2 ;char drop position 4 ls.bits
lsr.w #4,d1
lsl.w #1,d1
add.w d1,a2 ;char drop word-aligned address
andi.w #$ff,d7
move.w d7,d6
lsl.w #1,d6
move.w 0(a3,d6.w),d6 ;char fetch position
move.w d6,d3
andi.w #$000f,d3 ;fetch position 4 ls.bits
move.b -128(a3,d7.w),d7 ;char width
add.w d7,plotxpos
moveq #0,d5 ;Calc font_data source address
move.w d6,d5
lsr.w #4,d5
lsl.w #1,d5
add.l a1,d5
move.l d5,$50(a6) ;Blitter source A (Font word addr)
move.w d6,d5
add.w d7,d5 ;right edge of char
move.w d6,d0 ;copy left edge pos
move.w d5,d1 ;copy right egde pos
andi.w #$fff0,d0
andi.w #$fff0,d1
sub.w d0,d1
lsr.w #4,d1
addq.w #2,d1 ;gives total width of blit
move.w d1,d0 ;back up word width
lsl.w #1,d1
neg.w d1
move.w d1,$62(a6) ;Blitter modulo 'B' (font mask)
lea $60(a5,d1.w),a4
move.l a4,$4c(a6) ;Blitter source 'B' addr (font mask)
andi.w #$f,d6
lsl.w #1,d6
andi.w #$f,d5
lsl.w #1,d5
move.w $00(a5,d6.w),$44(a6) ;Blitter FWM
clr.w $46(a6) ;Blitter LWM
move.w $20(a5,d5.w),$5c(a5) ;Right edge mask in place
sub.w d3,d2 ;calc rotation (sub fetch from plot)
bpl sameword
subq.w #2,a2 ;back a word if minus
sameword ror.w #4,d2
andi.w #$f000,d2
move.w d2,$42(a6) ;BLTCON1
ori.w #$0fea,d2 ;D = A and B or C
move.w d2,$40(a6) ;BLTCON 0 (source rotation)
move.l a2,$48(a6) ;Blitter source C (Plot address)
move.l a2,$54(a6) ;Blitter dest D ('' '')
move.w total_modulo,d2
add.w d1,d2
move.w d2,$60(a6) ;Blitter Modulo C
move.w d2,$66(a6) ;Blitter Modulo D
move.w -4(a1),d2 ;get font width in bytes..
add.w d1,d2
move.w d2,$64(a6) ;Blitter Modulo A
move.w -2(a1),d2 ;get font height
lsl.w #6,d2
or.w d0,d2
move.w d2,$58(a6) ;Blitsize + go!
bsr blitwait
move.w char_spacing,d7
add.w d7,plotxpos
movem.l (a7)+,a0-a6/d0-d7
rts
******************************************************************************
*>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE ENDS! <<<<<<<<<<<<<<<<<<<<<<<<<<<<*
******************************************************************************
Make_Text_Screen
Maxlines equ 20
Stsmod equ 84
* A0 = Address of screen
* A1 = Address of text
movem.l a0-a6/d0-d7,-(a7)
bsr clear_main_screen
bsr settextpalette
move.l #outcast_vars,a4
clr.w first_page(a4)
tst.b -2(a1)
bne.s notfpage2
move.w #1,first_page(a4)
notfpage2 clr.w last_page(a4)
move.l a1,current_page_top(a4)
move.l a0,a2
move.l #smallfont,a5
moveq #0,d1
strtln1 moveq #0,d0
nschar1 moveq #0,d7
move.b (a1)+,d7
beq scend1
cmpi.b #$a,d7
beq.s cr1
lsl.w #3,d7
lea $00(a5,d7.w),a6
move.b (a6)+,(a0)
move.b (a6)+,stsmod(a0)
move.b (a6)+,stsmod*2(a0)
move.b (a6)+,stsmod*3(a0)
move.b (a6)+,stsmod*4(a0)
move.b (a6)+,stsmod*5(a0)
move.b (a6)+,stsmod*6(a0)
move.b (a6)+,stsmod*7(a0)
addq.w #1,a0
addq.w #1,d0
cmpi.w #80,d0
bne.s nschar1
cmpi.b #$a,(a1) ;skip cr if 80 column line
bne.s cr1
addq.w #1,a1
cr1 add.w #stsmod*8,a2
move.l a2,a0
addq.w #1,d1
cmpi.w #maxlines,d1
bne strtln1
tst.b (a1)
beq scend1
mts_done move.l a1,next_page_top(a4)
movem.l (a7)+,a0-a6/d0-d7
rts
scend1 move.w #1,last_page(a4)
bra mts_done
;---------------------------------------------------------------------------
Make_Buffer_Text_Screen
Stsmodb equ 80
* A0 = Address of screen
* A1 = Address of text
movem.l a0/a2-a6/d0-d7,-(a7)
move.l #outcast_vars,a4
clr.w first_page(a4)
tst.b -2(a1)
bne.s notfpage
move.w #1,first_page(a4)
notfpage move.l a0,a2
move.l #smallfont,a5
moveq #0,d1
strtln2 moveq #0,d0
nschar2 moveq #0,d7
move.b (a1)+,d7
beq scend2
cmpi.b #$a,d7
beq.s cr2
lsl.w #3,d7
lea $00(a5,d7.w),a6
move.b (a6)+,(a0)
move.b (a6)+,stsmodb(a0)
move.b (a6)+,stsmodb*2(a0)
move.b (a6)+,stsmodb*3(a0)
move.b (a6)+,stsmodb*4(a0)
move.b (a6)+,stsmodb*5(a0)
move.b (a6)+,stsmodb*6(a0)
move.b (a6)+,stsmodb*7(a0)
addq.w #1,a0
addq.w #1,d0
cmpi.w #80,d0
bne.s nschar2
cmpi.b #$a,(a1) ;skip cr if 80 column line
bne.s cr2
addq.w #1,a1
cr2 add.w #stsmodb*8,a2
move.l a2,a0
addq.w #1,d1
cmpi.w #maxlines,d1
bne strtln2
tst.b (a1)
beq scend2
mbs_done movem.l (a7)+,a0/a2-a6/d0-d7
rts
scend2 move.w #1,last_page(a4)
bra mbs_done
;---------------------------------------------------------------------------
scroll_text:
move.l #$dff000,a6
move.l #outcast_vars,a5
tst.w nextpage_trig(a5) ;next page requested?
beq no_init_left
clr.w nextpage_trig(a5)
tst.w last_page(a5)
bne no_init_left
move.w #1,scroll_left(a5)
clr.w column_slice(a5)
clr.l old_match_address(a5)
bsr waitcopirq
move.b #$ec,cop_hl1 ;canel any match highlight bar
move.b #$ec,cop_hl2
move.w #nextpage_button,d0 ;select icon = on
moveq #1,d1
bsr blit_button
move.l #textplane2,a0 ;clear screen
move.l a0,$54(a6)
move.l #$01000000,$40(a6)
clr.w $66(a6)
move.w #(166*64)+40,$58(a6)
bsr blitwait
move.l next_page_top(a5),a1 ;then type new text
move.l a1,current_page_top(a5)
bsr make_buffer_text_screen
move.l a1,next_page_top(a5)
bra no_init_right
no_init_left
tst.w prevpage_trig(a5) ;prev page requested?
beq no_init_right
clr.w prevpage_trig(a5)
tst.w first_page(a5)
bne no_init_right
move.w #1,scroll_right(a5)
clr.w column_slice(a5)
clr.w last_page(a5)
clr.l old_match_address(a5)
bsr waitcopirq
move.b #$ec,cop_hl1 ;cancel any match highlight bar
move.b #$ec,cop_hl2
moveq #20,d7 ;count back 20 lines to find
moveq #$a,d0 ;prev page top addr
move.l current_page_top(a5),a1
countback cmp.b -(a1),d0
bne.s countback
subq.w #1,d7
bpl.s countback
addq.w #1,a1
move.l a1,current_page_top(a5)
move.w #prevpage_button,d0 ;select icon = on
moveq #1,d1
bsr blit_button
move.l #textplane2,a0 ;clear screen
move.l a0,$54(a6)
move.l #$01000000,$40(a6)
clr.w $66(a6)
move.w #(166*64)+40,$58(a6)
bsr blitwait
bsr make_buffer_text_screen ;type new 'prev page' text
move.l a1,next_page_top(a5)
no_init_right
clr.w nextpage_trig(a5)
clr.w prevpage_trig(a5)
tst.w scroll_left(a5)
beq no_scroll_left
move.w column_slice(a5),d0
lsl.w #1,d0
move.l #textplane2,a1
add.w d0,a1
move.l a1,$50(a6) ;source
move.l #textscreen,a2
add.w screen_offset(a5),a2
addq.w #2,screen_offset(a5)
clr.w (a2) ;clear top line
add.w #82,a2
move.l a2,$54(a6) ;dest
move.l #-1,$44(a6)
move.l #$09f00000,$40(a6)
move.w #80-2,$64(a6)
move.w #84-2,$66(a6)
move.w #(165*64)+1,$58(a6)
bsr blitwait
addq.w #1,column_slice(a5)
cmpi.w #40,column_slice(a5)
bne.s sl_notend
clr.w scroll_left(a5)
move.w #nextpage_button,d0
clr.w d1
bsr blit_button
move.w #5,waitpage(a5)
sl_notend rts
no_scroll_left
move.l #outcast_vars,a5
tst.w scroll_right(a5)
beq.s no_scroll_right
moveq #39,d0
sub.w column_slice(a5),d0
lsl.w #1,d0
move.l #textplane2,a1
add.w d0,a1
move.l a1,$50(a6) ;source
move.l #textscreen,a2
add.w screen_offset(a5),a2
subq.w #2,screen_offset(a5)
clr.w 82(a2) ;clear top line
move.l a2,$54(a6) ;dest
move.l #-1,$44(a6)
move.l #$09f00000,$40(a6)
move.w #80-2,$64(a6)
move.w #84-2,$66(a6)
move.w #(165*64)+1,$58(a6)
bsr blitwait
addq.w #1,column_slice(a5)
cmpi.w #40,column_slice(a5)
bne.s sr_notend
clr.w scroll_right(a5)
move.w #prevpage_button,d0
clr.w d1
bsr blit_button
move.w #5,waitpage(a5)
sr_notend rts
no_scroll_right
rts
;---------------------------------------------------------------------------
button_handler
prevpage_button equ 1
menu_button equ 2
messages_button equ 3
adverts_button equ 4
news_button equ 5
info_button equ 6
nextpage_button equ 7
music_button equ 8
search_button equ 9
move.l #outcast_vars,a5
move.w icon_selected(a5),d2
cmpi.w #messages_button,d2
bne.s not_msgs
move.l #messages,d0
bra newtextfixed
not_msgs cmpi.w #adverts_button,d2
bne.s not_advs
move.l #adverts,d0
bra newtextfixed
not_advs cmpi.w #news_button,d2
bne.s not_news
move.l #news,d0
bra newtextfixed
not_news cmpi.w #info_button,d2
bne.s not_info
move.l #info,d0
bra newtextfixed
not_info tst.w menu_mode(a5) ;no scrolling if in menu mode!
bne notsearch
tst.w scroll_right(a5)
bne.s not_np
tst.w scroll_left(a5)
bne.s not_np
cmpi.b #$4f,keypressed(a5)
beq.s key_prev
cmpi.w #prevpage_button,d2
bne not_pp
key_prev tst.w waitpage(a5)
bne.s not_pp
move.w #1,prevpage_trig(a5)
rts
not_pp cmpi.b #$4e,keypressed(a5)
beq.s key_next
cmpi.w #nextpage_button,d2
bne not_np
key_next tst.w waitpage(a5)
bne.s not_np
move.w #1,nextpage_trig(a5)
rts
not_np cmpi.w #menu_button,d2
bne.s not_menu
cmp.w icon_lit(a5),d2
beq.s not_menu
move.w #1,menu_trig(a5)
move.w icon_lit(a5),d0
clr.w d1
bsr blit_button
move.w d2,d0
move.w d0,icon_lit(a5)
moveq #1,d1
bsr blit_button
move.w #1,drop_screen(a5)
move.w #90,drop_sin_index(a5)
bsr waitcopirq
move.b #$ec,cop_hl1 ;canel any match highlight bar
move.b #$ec,cop_hl2
not_menu tst.w presentspage(a5)
bne notsearch
tst.w scroll_left(a5)
bne notsearch
tst.w scroll_right(a5)
bne notsearch
cmpi.b #$21,keypressed(a5)
bne.s nopress_s
move.w #search_button,d2
nopress_s cmpi.w #search_button,d2 ;search?
bne notsearch
move.w d2,d0
moveq #1,d1
bsr blit_button
bsr search_bitplane_fix
clr.w did_find(a5)
bsr waitcopirq
move.b #$ec,cop_hl1
move.b #$ec,cop_hl2
bsr underboxstore
move.w #26,showsearchbox(a5)
bsr setboxpalette
waitsear tst.w showsearchbox(a5) ;wait for box to appear
bne.s waitsear
move.l #oldsearchstring,a2
move.l #searchstring,a4 ;print old search string
clr.w d0
clr.w d1
potlp move.b (a4)+,d0
move.b d0,(a2)+
tst.b d0
beq nxtchr
bsr printschar
addq.w #1,d1
bra potlp
nxtchr move.w #"*",d0 ;print cursor
move.w charnumber(a5),d1
bsr printschar
keyup btst #7,keypressed(a5)
bne.s keyup
clr.w d0
move.b keypressed(a5),d0
move.b d0,oldkey(a5)
cmpi.b #$45,d0
beq cancelsearch
cmpi.b #$44,d0 ;return?
beq gotstring
cmpi.b #$41,d0 ;delete?
bne.s notdel
move.l #searchstring,a3
move.w charnumber(a5),d1
subq.b #1,d1
bmi samekey ;cannot delete if pos 0
clr.b $00(a3,d1.w)
moveq #" ",d0
move.w charnumber(a5),d1 ;erase cursor character
bsr printschar
subq.w #1,charnumber(a5)
bra samekey
notdel cmpi.w #20,charnumber(a5)
beq samekey
move.l #keycodetable,a6
move.b $00(a6,d0.w),d0 ;ascii character
beq samekey
move.l #searchstring,a3
move.w charnumber(a5),d1
move.b d0,$00(a3,d1.w)
clr.w d1
move.w charnumber(a5),d1
bsr printschar
addq.w #1,charnumber(a5)
samekey move.b keypressed(a5),d0
cmp.b oldkey(a5),d0
beq.s samekey
bra nxtchr
gotstring
move.l #searchstring,a3 ;null terminate string
move.w charnumber(a5),d1
clr.b $00(a3,d1.w)
move.l #oldsearchstring,a2 ;compare with orig string
move.l #searchstring,a4 ;if not same `old match address`
cmplp1 move.b (a2)+,d0 ;becomes irrelevant.
beq scan_text
cmp.b (a4)+,d0
beq cmplp1
clr.l old_match_address(a5)
scan_text:
move.l start_of_section(a5),a2
move.b (a3),d7 ;1st char
moveq #0,d6 ;page numeber where match found
newpage moveq #0,d0 ;line where '' '' ''
move.l a2,a4 ;page top of section where '' ''
srchlp move.b (a2),d2
beq endofsearch
cmpi.b #"A"-1,d2 ;fix chars to lower case
bls.s nocsch
cmpi.b #"Z",d2
bhi.s nocsch
add.b #32,d2
nocsch cmp.b d7,d2
beq.s foundchar
cmpi.b #$a,d2
beq.s foundcr
contsrch addq.w #1,a2
bra srchlp
foundchar
move.l a2,a6
move.l #searchstring,a3 ;now see if rest of string matches
compchars addq.w #1,a6
addq.w #1,a3
move.b (a3),d3 ;last char of search string?
beq foundmatch
move.b (a6),d2 ;Fix uppercase chars to lower
cmpi.b #"A"-1,d2
bls.s nocsch2
cmpi.b #"Z",d2
bhi.s nocsch2
add.b #32,d2
nocsch2 cmp.b d2,d3
bne contsrch
bra compchars
foundcr addq.w #1,d0
cmpi.w #maxlines,d0
bne contsrch
addq.w #1,d6
addq.w #1,a2
bra newpage
endofsearch:
tst.w did_find(a5) ;if not matches made past original
beq cancelsearch ;pos just show that prev pos
move.w nearestmatchscreen(a5),d6
move.w nearestmatchline(a5),d0
move.l nearestmatchpagetop(a5),a4
bra showfind
foundmatch:
cmp.l current_page_top(a5),a2 ;ignore matches on previous screens
blt contsrch
move.w #1,did_find(a5)
move.w d6,nearestmatchscreen(a5)
move.w d0,nearestmatchline(a5)
move.l a4,nearestmatchpagetop(a5)
cmp.l old_match_address(a5),a2
bls contsrch
move.l a2,old_match_address(a5)
showfind move.w d6,matchscreen(a5)
cmp.l current_page_top(a5),a4
bne.s notfsamepage
lsl.w #3,d0
add.b #$47,d0
move.b d0,cop_hl1
add.b #9,d0
move.b d0,cop_hl2
move.w #$0180,cop_hl1+4 ;highlight col 0
move.w #$0180,cop_hl2+4 ;highlight col 0
bra cancelsearch
notfsamepage
addq.w #1,d0
move.w d0,matchline(a5)
move.l a4,a1
move.l a1,next_page_top(a5)
move.w #1,drop_screen(a5)
move.w #90,drop_sin_index(a5)
move.b #$ec,cop_hl1
move.b #$ec,cop_hl2
cancelsearch:
move.w #search_button,d0
clr.w d1
bsr blit_button
bsr waitnewframe
move.w #$0001,cop_scrl+2
clr.w searchplanes_on(a5)
bsr settextpalette
move.l #undersearchbox,a2
move.l #textscreen+(84*68)+28,a1
add.w screen_offset(a5),a1
moveq #38,d7
ylp2 moveq #12,d6
xlp2 move.w (a2)+,(a1)+
dbf d6,xlp2
add.w #84-26,a1
dbf d7,ylp2
rts
notsearch:
cmpi.b #$37,keypressed(a5)
bne.s nopress_m
move.w #music_button,d2
nopress_m cmpi.w #music_button,d2
bne.s notmusic
tst.w fade_music(a5)
bne.s notmusic
eori.w #1,music_toggle(a5)
bne.s f_up
move.w #$ff00,fade_music(a5)
move.w #8,d0
move.w #0,d1
bsr blit_button
bra notmusic
f_up move.w #$0100,fade_music(a5)
move.w #8,d0
move.w #1,d1
bsr blit_button
notmusic rts
newtextfixed:
clr.l old_match_address(a5)
move.l d0,start_of_section(a5)
move.l d0,next_page_top(a5)
clr.w menu_mode(a5)
move.w icon_lit(a5),d0
clr.w d1
bsr blit_button
move.w d2,d0
moveq #1,d1
bsr blit_button
move.w #1,drop_screen(a5)
move.w #90,drop_sin_index(a5)
move.w d2,icon_lit(a5)
clr.w icon_selected(a5)
bsr waitcopirq
move.b #$ec,cop_hl1 ;canel any match highlight bar
move.b #$ec,cop_hl2
rts
;---------------------------------------------------------------------------
clear_main_screen
movem.l a4-a6,-(a7)
move.l #outcast_vars,a4
move.l #$dff000,a6
move.l #textscreen-84,a5
move.l a5,$54(a6) ;clear screen
move.l #$01000000,$40(a6)
clr.w $66(a6)
move.w #(207*64)+42,$58(a6)
bsr blitwait
movem.l (a7)+,a4-a6
rts
;---------------------------------------------------------------------------
printschar
movem.l a3/a4/d0,-(a7)
move.l #textscreen+(84*93)+31,a4 ;plots char in search box
add.w screen_offset(a5),a4
add.w d1,a4
move.l #smallfont,a3
and.w #$ff,d0
cmpi.b #"a"-1,d0 ;ensure only capitals plotted
bls.s nocchng
sub.w #32,d0
nocchng lsl.w #3,d0
add.w d0,a3
move.b (a3)+,(a4)
move.b (a3)+,stsmod(a4)
move.b (a3)+,stsmod*2(a4)
move.b (a3)+,stsmod*3(a4)
move.b (a3)+,stsmod*4(a4)
move.b (a3)+,stsmod*5(a4)
move.b (a3)+,stsmod*6(a4)
move.b (a3)+,stsmod*7(a4)
movem.l (a7)+,a3/a4/d0
rts
;---------------------------------------------------------------------------
gen_searchbox:
move.l #outcast_vars,a5
move.w showsearchbox(a5),d1
beq nobox
subq.w #2,d1
move.l #searchbox,a0
move.l #textscreen+(84*68)+28,a1
move.l #textplane2+(84*68)+28,a2
add.w screen_offset(a5),a1
add.w d1,a0
evenloop cmpi.b #25,d1
bhi.s evendone
move.l a0,a4
move.l a1,a6
move.l a2,a3
moveq #19,d7
evenlp2 move.w (a4),(a6)
move.w 26(a4),(a3)
lea 84*2(a3),a3
lea 84*2(a6),a6
lea 26*4(a4),a4
dbf d7,evenlp2
addq.w #2,a0
addq.w #2,a1
addq.w #2,a2
addq.w #2,d1
bra.s evenloop
evendone
move.l #textscreen+(84*69)+28,a3
move.l #textplane2+(84*69)+28,a2
add.w screen_offset(a5),a3
move.l #searchbox+(26*2),a0
move.w showsearchbox(a5),d1
subq.w #2,d1
add.w d1,a3
add.w d1,a2
oddloop cmpi.b #25,d1
bhi.s odddone
move.l a0,a4
move.l a2,a1
move.l a3,a6
moveq #18,d7
oddlp2 move.w (a4),(a6)
move.w 26(a4),(a1)
lea 84*2(a6),a6
lea 84*2(a1),a1
lea 26*4(a4),a4
dbf d7,oddlp2
addq.w #2,a0
addq.w #2,a2
addq.w #2,a3
addq.w #2,d1
bra.s oddloop
odddone
subq.w #2,showsearchbox(a5)
nobox rts
;---------------------------------------------------------------------------
setboxpalette:
movem.l a0-a1/d7,-(a7)
move.l #searchboxpalette,a0
move.l #cop_cols2+$6,a1
moveq #6,d7
sbploop move.w (a0)+,(a1)
addq.w #4,a1
dbf d7,sbploop
movem.l (a7)+,a0-a1/d7
rts
;---------------------------------------------------------------------------
settextpalette:
movem.l a0-a1/d7,-(a7)
move.l #normaltextpalette,a0
move.l #cop_cols2+$6,a1
moveq #6,d7
sbploop2 move.w (a0)+,(a1)
addq.w #4,a1
dbf d7,sbploop2
movem.l (a7)+,a0-a1/d7
rts
;---------------------------------------------------------------------------
setmenupalette:
movem.l a0-a1/d7,-(a7)
move.l #menupalette,a0
move.l #cop_cols2+$6,a1
moveq #6,d7
sbploop3 move.w (a0)+,(a1)
addq.w #4,a1
dbf d7,sbploop3
movem.l (a7)+,a0-a1/d7
rts
;---------------------------------------------------------------------------
blitwait btst #6,$2(a6)
bne.s blitwait
rts
;---------------------------------------------------------------------------
waitnewframe
move.l a5,-(a7)
move.l #outcast_vars,a5
waiting tst.w newframe(a5)
beq.s waiting
clr.w newframe(a5)
move.l (a7)+,a5
rts
;---------------------------------------------------------------------------
waitcopirq
move.l a5,-(a7)
move.l #outcast_vars,a5
clr.w copirq_occured(a5)
waiting2 tst.w copirq_occured(a5)
beq.s waiting2
clr.w copirq_occured(a5)
move.l (a7)+,a5
rts
;---------------------------------------------------------------------------
underboxstore
movem.l a2/a1/d6/d7,-(a7)
move.l #undersearchbox,a2
move.l #textscreen+(84*68)+28,a1
add.w screen_offset(a5),a1
moveq #38,d7
ylp3 moveq #12,d6
xlp3 move.w (a1)+,(a2)+
dbf d6,xlp3
add.w #84-26,a1
dbf d7,ylp3
movem.l (a7)+,a2/a1/d6/d7
rts
;---------------------------------------------------------------------------
music_fader:
move.l #outcast_vars,a5
move.w fade_music(a5),d0
add.w d0,mt_volscale
tst.w mt_volscale
bpl.s botvolok
clr.w mt_volscale
clr.w fade_music(a5)
bra topvolok
botvolok cmpi.w #$3fff,mt_volscale
bls.s topvolok
move.w #$4000,mt_volscale
clr.w fade_music(a5)
topvolok rts
;---------------------------------------------------------------------------
search_bitplane_fix
move.l #outcast_vars,a5
move.l #$dff000,a6
move.l #$00000000,$44(a6)
clr.l $64(a6)
clr.w $62(a6)
move.l #$2d300000,$40(a6)
move.l #textscreen,a1
add.w screen_offset(a5),a1
move.l a1,$4c(a6) ;b source
sub.w #84,a1
move.l a1,$50(a6) ;a source
move.l #textplane2,$54(a6) ;d dest
move.w #(166*64)+42,$58(a6)
bsr blitwait
move.w #1,searchplanes_on(a5)
move.l #textplane2+2,d0
move.l #cop_bpl2,a0
move.w d0,$6(a0)
swap d0
move.w d0,$2(a0)
clr.w cop_scrl+2
rts
;---------------------------------------------------------------------------
fade_out_routine
move.l d0,-(a7)
fadeoloop tst.b (a5) ;fade a copper palette at a5 to black
beq.s reddown ;d7 = number of colours to fade - 1
subq.b #1,(a5)
reddown move.b $1(a5),d0
andi.b #$f0,d0
beq.s greendown
sub.b #$10,$1(a5)
greendown move.b $1(a5),d0
andi.b #$0f,d0
beq.s bluedown
subq.b #$1,$1(a5)
bluedown addq.w #4,a5
dbf d7,fadeoloop
move.l (a7)+,d0
rts
;---------------------------------------------------------------------------
fade_in_routine
movem.l d0/d1,-(a7)
fadeiloop move.b (a6),d0 ;fade up a copper palette at a5 to match
cmp.b (a5),d0 ;palette words at a6
beq.s reddup ;d7 = number of colours to fade up
addq.b #1,(a5)
reddup move.b $1(a6),d0
andi.b #$f0,d0
move.b $1(a5),d1
andi.b #$f0,d1
cmp.b d0,d1
beq.s greenup
add.b #$10,$1(a5)
greenup move.b $1(a6),d0
andi.b #$f,d0
move.b $1(a5),d1
andi.b #$f,d1
cmp.b d0,d1
beq.s blueup
addq.b #$1,$1(a5)
blueup addq.w #4,a5
addq.w #2,a6
dbf d7,fadeiloop
movem.l (a7)+,d0/d1
rts
;---------------------------------------------------------------------------
screen_fades:
move.l #outcast_vars,a0
tst.w fade_in_all(a0)
beq nofia
subq.w #1,fade_in_all(a0)
btst #0,fade_in_all+1(a0)
beq nofia
move.l #cop_cols1+2,a5
move.l #bdrpalette,a6
moveq #15,d7
bsr fade_in_routine
move.l #cop_pcols+2,a5
move.l #pointerpalette,a6
moveq #15,d7
bsr fade_in_routine
move.l #cop_cols3+2,a5
move.l #bdrpalette,a6
moveq #15,d7
bsr fade_in_routine
move.l #cop_cols2+6,a5
move.l #normaltextpalette,a6
moveq #6,d7
bsr fade_in_routine
rts
nofia tst.w fade_out_all(a0)
beq nofoa
subq.w #1,fade_out_all(a0)
bne.s noquit
move.w #1,quit(a0)
noquit btst #0,fade_out_all+1(a0)
beq nofia
move.l #cop_cols1+2,a5
moveq #15,d7
bsr fade_out_routine
move.l #cop_pcols+2,a5
moveq #15,d7
bsr fade_out_routine
move.l #cop_cols3+2,a5
moveq #15,d7
bsr fade_out_routine
move.l #cop_cols2+6,a5
moveq #6,d7
bsr fade_out_routine
move.l #cop_bcols+6,a5
moveq #31,d6
cbf_loop moveq #0,d7
bsr fade_out_routine
add.w #$10,a5
dbf d6,cbf_loop
nofoa rts
;---------------------------------------------------------------------------
fadeloadpicin:
btst #0,fadelpi+1(a5)
beq.s nfpi
move.l #loadingpicpalette,a6
move.l #lpcols1+2,a5
moveq #15,d7
bsr fade_in_routine
move.l #loadingpicpalette,a6
move.l #lpcols2+2,a5
moveq #15,d7
bsr fade_in_routine
nfpi rts
;---------------------------------------------------------------------------
ExecBase = 4
OpenLibrary = -408
CloseLibrary = -414
Execute = -222
Loadexe: Lea DosName,a1
Clr.l d0
Move.l ExecBase,a6
Jsr OpenLibrary(A6)
Move.l D0,DosBase
Move.l FileName,D1
Clr.l D2
Clr.l D3
Move.l DosBase,a6
Jsr Execute(A6)
clr.l d0
CloseDos: Move.l ExecBase,a6
Move.l DosBase,a1
Jsr CloseLibrary(A6)
Rts
DosName: Dc.b 'dos.library',0
Even
DosBase: dc.l 0
Filename dc.l 0
;---------------------------------------------------------------------------
drawinitpage:
lineoneoffset equ 6
move.l #initpagebanner,a1
move.l #textscreen+2,a0
bsr make_text_screen
move.l #textscreen+2,plot_screen
move.w #modulo,total_modulo
move.w #0,use_font
move.l #font_list,a1
move.w use_font,d3
mulu #3*4,d3
move.l 0(a1,d3.w),a2
move.w $2(a2),d2 ;height of this font
add.w #y_line_spacing,d2
move.l 8(a1,d3.w),a2
sub.w #128,a2 ;char width list
move.w #lineoneoffset,plotypos
move.l #initpagetext,a0
move.l a0,a3
nxtfpln bsr findpixlength
lsr.w #1,d1
move.w #x_centre,d0
sub.w d1,d0
move.w d0,plotxpos
bsr type_text
add.w d2,plotypos
cmpi.b #"@",(a3)
bne nxtfpln
rts
;---------------------------------------------------------------------------
include includes/dotplot_routine_c.src
;---------------------------------------------------------------------------
*****************************************************************************
include includes/pt-play+volscale.src
*****************************************************************************
section datastuff,data
;---------------------------------------------------------------------------
outcast_vars:
dcb.w $40,0
button_unselected_addrs:
dc.l button1u,button2u,button3u,button4u,button5u,button6u
dc.l button7u,button8u,button9u
button_selected_addrs:
dc.l button1s,button2s,button3s,button4s,button5s,button6s
dc.l button7s,button8s,button9s
buttonsizes_and_positions:
* size: x/y | plotpos x/y
dc.w 48,24,54,26
dc.w 32,50,103,11
dc.w 96,20,119,7
dc.w 80,18,124,27
dc.w 64,17,130,45
dc.w 32,50,187,12
dc.w 48,24,232,26
dc.w 32,15,279,26
dc.w 32,16,279,41
bdrpalette:
include data/borderpalette.src
searchbox:
incbin data/searchbox208x39x2b.raw
smallfont:
dcb.b 32*8,0
incbin data/font6.bin
dcb.b 32*8,0
incbin data/chars160-255.bin
even
;---------------------------------------------------------------------------
Intros_banner:
incbin text/intro_menu_banner.txt
dc.b 0
even
Intros_text:
incbin text/intro_list.txt
dc.b 0
even
;---------------------------------------------------------------------------
************* FILELENGTH OF BANNERS MUST BE AN EVEN NUMBER!! ***************
;---------------------------------------------------------------------------
dc.b $0,$a ;MUST PROCEED TEXT FILE
MESSAGES: incbin text/messages_banner.txt
incbin text/messages.txt
dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
even
;---------------------------------------------------------------------------
dc.b $0,$a ;MUST PROCEED TEXT FILE
ADVERTS: incbin text/adverts_banner.txt
incbin text/adverts.txt
dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
even
;---------------------------------------------------------------------------
dc.b $0,$a ;MUST PROCEED TEXT FILE
NEWS: incbin text/news_banner.txt
incbin text/news.txt
dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
even
;---------------------------------------------------------------------------
dc.b $0,$a ;MUST PROCEED TEXT FILE
INFO: incbin text/info_banner.txt
incbin text/info.txt
dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
even
;---------------------------------------------------------------------------
initpagetext: incbin text/firstpagetext.txt
even
initpagebanner: incbin text/firstpagebanner.txt
dc.b 0
even
;---------------------------------------------------------------------------
Sinetable: incbin data/sin-costable.data
Keycodetable: incbin data/keycode-ascii.table
Searchstring: dcb.b 32,0
OldSearchstring: dcb.b 32,0
even
;----------------------------------------------------------------------------
textshadow_col equ $0824
menushadow_col equ $0824
dots_col equ $0957
sbcol equ $0957 ;Select bar colour
searchboxpalette:
dc.w dots_col
dc.w $0fff
dc.w $0fff ;text+dots
dc.w textshadow_col
dc.w textshadow_col ;text shadow+dots
dc.w $0745 ;box colour
dc.w $0745 ;box+dots
dc.w $0fff
normaltextpalette:
dc.w dots_col
dc.w $0fff
dc.w $0fff
dc.w textshadow_col
dc.w textshadow_col
dc.w $0fff
dc.w $0fff
dc.w $0fff
menupalette:
dc.w dots_col
dc.w $0fff
dc.w $0fff
dc.w menushadow_col
dc.w dots_col
dc.w $0fff
dc.w $0fff
dc.w $0fff
pointerpalette:
dc.w $0000
dc.w $0FFF
dc.w $0FEE
dc.w $0EDD
dc.w $0DBB
dc.w $0DAB
dc.w $0B89
dc.w $0A78
dc.w $0967
dc.w $0856
dc.w $0745
dc.w $0634
dc.w $0533
dc.w $0422
dc.w $0312
dc.w $0211
loadingpicpalette:
dc.w $0000
dc.w $0EEE
dc.w $0013
dc.w $0023
dc.w $0024
dc.w $0135
dc.w $0246
dc.w $0247
dc.w $0358
dc.w $0468
dc.w $0679
dc.w $078A
dc.w $08AB
dc.w $0ABC
dc.w $0CCD
dc.w $0DDD
;---------------------------------------------------------------------------
filenames:
fn0 dc.b "NEO->OUTCAST<-NEO:0",0
fn1 dc.b "NEO->OUTCAST<-NEO:1",0
fn2 dc.b "NEO->OUTCAST<-NEO:2",0
fn3 dc.b "NEO->OUTCAST<-NEO:3",0
fn4 dc.b "NEO->OUTCAST<-NEO:4",0
fn5 dc.b "NEO->OUTCAST<-NEO:5",0
fn6 dc.b "NEO->OUTCAST<-NEO:6",0
fn7 dc.b "NEO->OUTCAST<-NEO:7",0
fn8 dc.b "NEO->OUTCAST<-NEO:8",0
fn9 dc.b "NEO->OUTCAST<-NEO:9",0
even
fn_addrs dc.l fn0,fn1,fn2,fn3,fn4,fn5,fn6,fn7,fn8,fn9
;---------------------------------------------------------------------------
include includes/dotplot_nonchipdata.src
;---------------------------------------------------------------------------
section chipstuff,data_c
;---------------------------------------------------------------------------
copper dc.l $0101ff00,$01004200,$01020000,$01040024
dc.l $008e2c81,$00902cc1,$00920038,$009400d0
dc.l $01080078,$010a0078,$01fc0000,$01060000
cop_spr dc.l $01200000,$01220000,$01240000,$01260000
dc.l $01280000,$012a0000,$012c0000,$012e0000
dc.l $01300000,$01320000,$01340000,$01360000
dc.l $01380000,$013a0000,$013c0000,$013e0000
cop_bpls1 dc.l $00e00000,$00e20000,$00e40000,$00e60000
dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
cop_cols1 dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018A0000,$018C0000,$018E0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019A0000,$019C0000,$019E0000
cop_pcols dc.l $01a00000,$01a20000,$01a40000,$01a60000
dc.l $01a80000,$01aa0000,$01ac0000,$01ae0000
dc.l $01b00000,$01b20000,$01b40000,$01b60000
dc.l $01b80000,$01ba0000,$01bc0000,$01be0000
;--------------------------------------------------------------------------
dc.l $4601ff00,$01000000
dot_bpln dc.l $00e00000,$00e20000
dc.l $4701ff00,$01009200
cop_scrl dc.l $01020001,$01040024,$01fc0000,$01060000
dc.l $008e2c81,$00902cc1,$0092003c,$009400d4
dc.l $01080004,$010a0004
cop_bpl1 dc.l $00e40000,$00e60000
cop_bpl2 dc.l $00e80000,$00ea0000
cop_cols2 dc.w $0180,$0000
dc.w $0182,$0000
dc.w $0184,$0000
dc.w $0186,$0000
dc.w $0188,$0000
dc.w $018a,$0000
dc.w $018c,$0000
dc.w $018e,$0000
cop_tstrt dc.l $4801ff00,$0100b200 ;<- Blanked by drop screen if ness
cop_skpln dc.l $00800000,$00820000 ;Copper branch address
cop_doskp dc.l $00880000 ;00880000 = branch 01fe0000 = not
copper_rtn
cop_hl1 dc.l $ec01ff00,$01840745
cop_hl2 dc.l $ec01ff00,$01840000
;---------------------------------------------------------------------------
dc.l $ed01ff00,$01000000
cop_bpls3 dc.l $00e00000,$00e20000,$00e40000,$00e60000
dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
dc.l $01020000,$01040024
dc.l $008e2c81,$00902cc1,$00920038,$009400d0
dc.l $01080078,$010a0078,$01fc0000,$01060000
cop_cols3 dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018A0000,$018C0000,$018E0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019A0000,$019C0000,$019E0000
dc.l $ee01ff00,$01004200
dc.l $ffdffffe,$0e01ff00
dc.l $009c8010
cop_rstrt dc.l $00800000,$00820000,$fffffffe
;---------------------------------------------------------------------------
copper_bar
dc.l $00800000,$00820000
cop_bcols dc.w $7045,$fffe,$0180,sbcol,$70cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7145,$fffe,$0180,sbcol,$71cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7245,$fffe,$0180,sbcol,$72cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7345,$fffe,$0180,sbcol,$73cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7445,$fffe,$0180,sbcol,$74cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7545,$fffe,$0180,sbcol,$75cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7645,$fffe,$0180,sbcol,$76cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7745,$fffe,$0180,sbcol,$77cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7845,$fffe,$0180,sbcol,$78cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7945,$fffe,$0180,sbcol,$79cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7a45,$fffe,$0180,sbcol,$7acd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7b45,$fffe,$0180,sbcol,$7bcd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7c45,$fffe,$0180,sbcol,$7ccd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7d45,$fffe,$0180,sbcol,$7dcd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7e45,$fffe,$0180,sbcol,$7ecd,$fffe,$0180,$0000,$01fe,$0000
dc.w $7f45,$fffe,$0180,sbcol,$7fcd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8045,$fffe,$0180,sbcol,$80cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8145,$fffe,$0180,sbcol,$81cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8245,$fffe,$0180,sbcol,$82cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8345,$fffe,$0180,sbcol,$83cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8445,$fffe,$0180,sbcol,$84cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8545,$fffe,$0180,sbcol,$85cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8645,$fffe,$0180,sbcol,$86cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8745,$fffe,$0180,sbcol,$87cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8845,$fffe,$0180,sbcol,$88cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8945,$fffe,$0180,sbcol,$89cd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8a45,$fffe,$0180,sbcol,$8acd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8b45,$fffe,$0180,sbcol,$8bcd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8c45,$fffe,$0180,sbcol,$8ccd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8d45,$fffe,$0180,sbcol,$8dcd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8e45,$fffe,$0180,sbcol,$8ecd,$fffe,$0180,$0000,$01fe,$0000
dc.w $8f45,$fffe,$0180,sbcol,$8fcd,$fffe,$0180,$0000,$0088,$0000
;---------------------------------------------------------------------------
loadingpiccopper1
dc.l $0101ff00,$0100c204,$01020000,$01040024
dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
dc.l $01200000,$01220000,$01240000,$01260000
dc.l $01280000,$012a0000,$012c0000,$012e0000
dc.l $01300000,$01320000,$01340000,$01360000
dc.l $01380000,$013a0000,$013c0000,$013e0000
lpbpls1 dc.l $00e00000,$00e20000,$00e40000,$00e60000
dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
lpcols1 dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018A0000,$018C0000,$018E0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019A0000,$019C0000,$019E0000
dc.l $010801c0,$010a01c0
lpswap1 dc.l $00800000,$00820000,$fffffffe
loadingpiccopper2
dc.l $0101ff00,$0100c204,$01020000,$01040024
dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
dc.l $01200000,$01220000,$01240000,$01260000
dc.l $01280000,$012a0000,$012c0000,$012e0000
dc.l $01300000,$01320000,$01340000,$01360000
dc.l $01380000,$013a0000,$013c0000,$013e0000
lpbpls2 dc.l $00e00000,$00e20000,$00e40000,$00e60000
dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
lpcols2 dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018A0000,$018C0000,$018E0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019A0000,$019C0000,$019E0000
dc.l $010801c0,$010a01c0
lpswap2 dc.l $00800000,$00820000,$fffffffe
*****************************************************************************
lacesynccopper:
dc.l $0101ff00,$01000204,$01020000,$01040024
dc.l $fffffffe
*****************************************************************************
pointersprite:
spr1: dc.w $0000,$0000
dc.w $E000,$3000
dc.w $9800,$EC00
dc.w $6600,$BB00
dc.w $D980,$5EC0
dc.w $2E60,$4FB0
dc.w $6A18,$2A6C
dc.w $11C6,$201B
dc.w $3EB8,$114C
dc.w $0514,$1AFE
dc.w $184C,$0FFD
dc.w $012D,$0FFE
dc.w $0CF2,$06F4
dc.w $0264,$0768
dc.w $0508,$0090
dc.w $0090,$0260
dc.w $0260,$0040
dc.w $0040,$0000
dc.w $0000,$0000
spr2: dc.w $0000,$0080
dc.w $E000,$1000
dc.w $9800,$0400
dc.w $4600,$8100
dc.w $E180,$8040
dc.w $3060,$4010
dc.w $7598,$4004
dc.w $1FE6,$2001
dc.w $3FF8,$2004
dc.w $0FEC,$1002
dc.w $1FF4,$1003
dc.w $07F9,$0803
dc.w $0EF2,$090E
dc.w $0264,$059C
dc.w $0508,$07F8
dc.w $0090,$02F0
dc.w $0220,$0260
dc.w $0040,$0040
dc.w $0000,$0000
;---------------------------------------------------------------------------
topborder: incbin data/topborder320x28.raw
bottomborder: incbin data/bottomborder320x62.raw
buttonsensemask: incbin data/iconsensemask_160x31x4.rawblit
undersearchbox: dcb.b (208/8)*39,0
button1u incbin data/leftarrow_48x24selected.raw
button1s incbin data/leftarrow_48x24unselected.raw
button2u incbin data/menu_32x50unselected.raw
button2s incbin data/menu_32x50selected.raw
button3u incbin data/messages_96x20unselected.raw
button3s incbin data/messages_96x20selected.raw
button4u incbin data/adverts_80x18unselected.raw
button4s incbin data/adverts_80x18selected.raw
button5u incbin data/news_64x17unselected.raw
button5s incbin data/news_64x17selected.raw
button6u incbin data/info_32x50unselected.raw
button6s incbin data/info_32x50selected.raw
button7u incbin data/rightarrow_48x24selected.raw
button7s incbin data/rightarrow_48x24unselected.raw
button8u incbin data/music_32x15unselected.raw
button8s incbin data/music_32x15selected.raw
button9u incbin data/search_32x16unselected.raw
button9s incbin data/search_32x16selected.raw
*----------------------------------------------------------------------------
mask_list dc.w $ffff,$7fff,$3fff,$1fff,$0fff,$07ff,$03ff,$01ff
dc.w $00ff,$007f,$003f,$001f,$000f,$0007,$0003,$0001
dc.w $0000,$8000,$c000,$e000,$f000,$f800,$fc00,$fe00
dc.w $ff00,$ff80,$ffc0,$ffe0,$fff0,$fff8,$fffc,$fffe
mask_line dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff
dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$0000
*----------------------------------------------------------------------------
plotxpos dc.w 0
plotypos dc.w 0
char_spacing dc.w 0
total_modulo dc.w 40
plot_screen dc.l 0
use_font dc.w 0
FONT_LIST
dc.l fnt_data0,fnt_ord0,fnt_pos0
* dc.l fnt_data1,fnt_ord1,fnt_pos1
* dc.l fnt_data2,fnt_ord2,fnt_pos2 ;uncomment as applic...
* dc.l fnt_data3,fnt_ord3,fnt_pos3 ;uncomment as applic...
dc.l $0 ;= NO MORE FONTS!
*(FOR EACH FONT)-------------------------------------------------------------
fnt_data0 dc.w 832/8;width in bytes
dc.w 13 ;height (excluding extra 'dot-line')
incbin data/fontdata832x13.raw ;actual raw font
dc.w $ffff ;in case of missing last dot
fnt_ord0 dc.b " !",$22,"$%^&*()_-+=\/<>.,@#:;{}[]","'","?" ;In same order as raw font
dc.b "abcdefghijklmnopqrstuvwxyz"
dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
dc.b $00 ;Null terminated.
even
dcb.b 128,0
fnt_pos0 dcb.w 128,0
*----------------------------------------------------------------------------
dcb.b 84,0
textscreen:
dcb.l ((672/8)*(166+60))/4,0 ;text+scroll buffer (enough for 60
;pages
textplane2:
dcb.l (((672/8)*166)/4),0
*----------------------------------------------------------------------------
include includes/dotplot_chipdata.src
*----------------------------------------------------------------------------
outcastscreen: incbin data/outcastlogo511x272.raw
*----------------------------------------------------------------------------
*****************************************************************************
PACK_NUMBER equ $01
mt_data: incbin "music/mod.outcast"
*****************************************************************************